12525
3038
Είμαι απλώς αρχάριος στο Swift coding. Η ιδέα μου είναι πολύ απλή που είναι μια εφαρμογή με δύο κουμπιά. Όταν κάνετε κλικ, ένα πεδίο κειμένου θα αλλάξει το κείμενό του.
Στο Main.StoryBoard, προσθέτω ένα πεδίο κειμένου και δύο κουμπιά.
Στο αρχείο ViewController.swift. Γράφω ως εξής:
εισαγωγή UIKit
class ViewController: UIViewController {
@IBOutlet αδύναμο var textfield: UITextField!
Κουμπί @IBOutlet αδύναμο var: UIButton!
@IBOutlet αδύναμο κουμπί 2: UIButton!
@IBAction func action1 (_ sender: UIButton) {
textfield.text = "μόλις κάνατε κλικ στο κουμπί1"
}
@IBAction func action2 (_ sender: UIButton) {
textfield.text = "μόλις κάνατε κλικ στο κουμπί2"
}
}
Υποτίθεται ότι είναι εντάξει. Ωστόσο, εμφανίζεται ένα σφάλμα που δείχνει:
νήμα 1: σήμα SIGABRT
στο αρχείο AppDelegate.swift γραμμή:
class AppDelegate: UIResponder, UIApplicationDelegate
Τι συμβαίνει με τον κωδικό μου; 
Για να επιλύσετε το πρόβλημα, πρώτα καθαρίστε το έργο και μετά ξαναχτίστε.
Για να καθαρίσετε το έργο, μεταβείτε στο MenuBar: Product -> Clean
Στη συνέχεια, για να δημιουργήσετε ξανά το έργο, απλώς κάντε κλικ στο κουμπί Εκτέλεση ως συνήθως.
|
Λαμβάνετε ένα σφάλμα SIGABRT κάθε φορά που έχετε αποσυνδεθεί πρίζα. Κάντε κλικ στον ελεγκτή προβολής σας στο storyboard και μεταβείτε στις συνδέσεις στο πλαϊνό πλαίσιο (το σύμβολο βέλους). Δείτε αν έχετε ένα επιπλέον κατάστημα, ένα αντίγραφο ή ένα άλλο που δεν είναι συνδεδεμένο. Εάν δεν είναι αυτό, τότε ίσως δεν έχετε συνδέσει σωστά τα καταστήματά σας στον κωδικό σας.
Απλώς θυμηθείτε ότι το SIGABRT συμβαίνει όταν προσπαθείτε να καλέσετε μια πρίζα (κουμπί, προβολή, πεδίο κειμένου κ.λπ.) που δεν υπάρχει.
|
Για μένα δεν ήταν μια διέξοδος. Επίλυσα το πρόβλημα πηγαίνοντας στο σφάλμα Και διαβάζοντας αυτό που είπε. (Επίσης Noob ..)
Αυτό ήταν το σφάλμα:
Και η λύση ήταν εδώ:
Απλώς κάντε κύλιση προς τα πάνω στην έξοδο και το σφάλμα θα αποκαλυφθεί.
|
Ένας κοινός λόγος για αυτόν τον τύπο σφάλματος είναι ότι ενδέχεται να έχετε αλλάξει το όνομα του IBOutlet ή του IBAction σας, μπορείτε απλώς να το ελέγξετε μεταβαίνοντας στον πηγαίο κώδικα.
Κάντε κλικ στο main.storyboard και, στη συνέχεια, επιλέξτε άνοιγμα ως
και στη συνέχεια επιλέξτε τον πηγαίο κώδικα
θα ανοίξει ο πηγαίος κώδικας
και, στη συνέχεια, ελέγξτε αν υπάρχει το όνομα του iboutlet ή του ibaction που έχετε αλλάξει, εάν υπάρχει τότε επιλέξτε το τμήμα και διαγράψτε το και, στη συνέχεια, δημιουργήστε ξανά το iboutlet ή το ibaction.
Αυτό θα επιλύσει το πρόβλημά σας
|
Στην περίπτωσή μου δεν έλαβα σφάλμα μόνο το σφάλμα στο AppDelegate και έπρεπε να καταργήσω την επόμενη επιλογή: OS_ACTIVITY_MODE, τότε θα μπορούσα να βρω τον πραγματικό λόγο σφάλματος στο αρχείο .xib μου
Ελπίζω να σας βοηθήσει και αυτό :)
|
Είχα το ίδιο πρόβλημα. Έφτιαξα ένα κουμπί στο storyboard και το σύνδεσα με το ViewController και αργότερα διέγραψα το κουμπί. Έτσι, η σύνδεση ήταν ακόμα εκεί, αλλά το κουμπί δεν ήταν, και έτσι έχω το ίδιο σφάλμα με εσάς.
Να φτιάξω:
Μεταβείτε στον επιθεωρητή σύνδεσης (το βέλος στην επάνω δεξιά γωνία, στο storyboard σας) και διαγράψτε τυχόν αχρησιμοποίητες συνδέσεις.
|
Εάν συναντήσετε αυτό στο Xcode 10 θα πρέπει να καθαρίσετε πριν από την κατασκευή. Εναλλακτικά, μεταβείτε στο παλαιό σύστημα κατασκευής. Αρχείο -> Ρυθμίσεις χώρου εργασίας ... -> Σύστημα Build: Legacy Build System.
|
Στην περίπτωσή μου δεν υπήρχε καθόλου αρχείο καταγραφής.
Το λάθος μου ήταν να σπρώξω έναν ελεγκτή προβολής σε μια στοίβα πλοήγησης που ήταν ήδη μέρος της στοίβας πλοήγησης.
|
Μερικές φορές συμβαίνει επίσης όταν η συνάρτηση πρέπει να εκτελεστεί μόνο στο κύριο νήμα, οπότε μπορείτε να την διορθώσετε εκχωρώντας την στο κύριο νήμα ως εξής: -
DispatchQueue.main.async {
τον κωδικό σας εδώ
}
|
Για μένα, αυτό το σφάλμα ήταν επειδή είχα ένα βήμα προετοιμασίας segue που δεν ήταν εφαρμόσιμο στο segue που γινόταν.
μακρά ιστορία:
παράκαμψη func προετοιμασία (για segue: UIStoryboardSegue, αποστολέας: Οποιοδήποτε;) {
ας gosetup = segue.destination ως! Εκσυγχρονίζω
gosetup.wherefrom = updatestring
}
Αυτό έγινε σε όλα τα segue όταν ήταν μόνο για ένα. Γι 'αυτό δημιουργώ ένα boolean και έβαλα το gosetup μέσα του.
|
Αυτό είναι ένα πολύ κοινό σφάλμα και μπορεί να συμβεί για πολλούς λόγους. Το πιο συνηθισμένο είναι όταν ένα IBOUTLET / IBACTION συνδεδεμένο σε έναν ελεγκτή προβολής στο storyboard διαγράφεται από το γρήγορο αρχείο αλλά όχι από το storyboard. Εάν αυτό δεν συμβαίνει, χρησιμοποιήστε το αρχείο καταγραφής στην κάτω γραμμή εργαλείων για να μάθετε ποιο είναι το σφάλμα και να το διαγνώσετε. Μπορείτε να χρησιμοποιήσετε breakpoints και εντοπισμό σφαλμάτων για να σας βοηθήσουμε να βρείτε το σφάλμα.
Για να μάθετε πώς να διορθώσετε το σφάλμα χρησιμοποιήστε αυτό το άρθρο που βρήκα στο Google: https://rayaans.com/fixing-the-notorious-sigabrt-error-in-xcode
|
Στην περίπτωσή μου, χρησιμοποιούσα το RxSwift για εκτέλεση αναζήτησης.
Είχα συνεχίσει να χρησιμοποιώ μια κοινόχρηστη παρουσία μιας συγκεκριμένης κλάσης μέσα στη μέθοδο onNext, η οποία πιθανώς την έκανε απρόσιτη (Mutex).
Βεβαιωθείτε ότι τέτοιες περιπτώσεις αντιμετωπίζονται προσεκτικά μόνο όταν είναι απολύτως απαραίτητο.
Στην περίπτωσή μου, χρησιμοποίησα μερικές μεταβλητές εκ των προτέρων για να αποθηκεύσω με ασφάλεια (και διαδοχικά) τις τιμές επιστροφής των μεθόδων της κοινής παρουσίας και τις επαναχρησιμοποίησα στο μπλοκ onNext.
|
Είχα το ίδιο πρόβλημα. Στην περίπτωσή μου απλώς αντικατέστησα το αρχείο
GoogleService-Info.plist
σε αυτό το μονοπάτι:
Πλατφόρμα \ ios \ YOUR_APP_NAME \ Πόροι \ Πόροι
Στην περίπτωσή μου τα αρχεία υπήρχαν χωρίς δεδομένα.
|
Πολύ ενεργή ερώτηση. Κερδίστε 10 φήμη για να απαντήσετε σε αυτήν την ερώτηση. Η απαίτηση φήμης συμβάλλει στην προστασία αυτής της ερώτησης από ανεπιθύμητες ενέργειες και μη απαντήσεις.
Δεν είναι η απάντηση που ψάχνετε; Περιηγηθείτε σε άλλες ερωτήσεις με ετικέτα ios γρήγορα ή κάντε τη δική σας ερώτηση.